package com.itheima.mapper;

import com.itheima.dto.AddDishDTO;
import com.itheima.vo.DishAndCategoryVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author 小帅蓝
 * @Date 2022/6/16 17:23
 */
@Mapper
public interface DishMapper {

    /**
     * 计算菜品总数
     *
     * @param name 菜品名称
     * @return 菜品总数
     */
    Integer getCount(String name);

    /**
     * 菜品信息分页查询
     *
     * @param name     菜品名称
     * @param offset   起始页
     * @param pageSize 每页显示条数
     * @param type     类型,1-菜品分类，2-套餐分类
     * @return 菜品信息集合
     */
    List<DishAndCategoryVO> query(@Param("name") String name,
                                  @Param("offset") Integer offset,
                                  @Param("pageSize") Integer pageSize,
                                  @Param("type") String type);

    /**
     * 菜品下拉列表
     *
     * @param categoryId 菜品分类id
     * @param status     0-停售，1-起售
     * @return List<DishWithFlavorVO>
     */
    List<DishAndCategoryVO> selectList(@Param("categoryId") String categoryId, @Param("status") Integer status);

    /**
     * 新增菜品
     *
     * @param addDishDTO AddDishDTO
     * @return 受影响行数
     */
    int addDish(AddDishDTO addDishDTO);

    /**
     * 根据id查询菜品信息
     *
     * @param id 菜品id
     * @return DishAndCategoryVO
     */
    DishAndCategoryVO queryById(String id);

    /**
     * 修改菜品
     *
     * @param addDishDTO AddDishDTO
     * @return 受影响行数
     */
    int updateDish(AddDishDTO addDishDTO);

    /**
     * 逻辑批量删除菜品
     *
     * @param ids ids
     * @return 受影响行数
     */
    Integer deleteDish(@Param("ids") String[] ids);

    /**
     * 批量修改状态
     *
     * @param ids    ids
     * @param status 状态
     * @return 受影响行数
     */
    int updateStatus(@Param("ids") String[] ids, @Param("status") Integer status);

}
